package com.bit.cfdi.web.domain;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;


@Entity
@Table(name = "licencia_serie")
public class LicenciaSerie {
	
	public static final String FULL = "full";
	public static final String TIEMPO = "tiempo";
	
	//Fields
	private Long idLicenciaSerie;
	private Negocio negocio;
	private String tipo;
	private String rfc;
	private Calendar fechaVencimiento;
	private Long ultimaModificacionPor;
	private Calendar fechaModificacion;
	
	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id_licencia_serie", nullable = false)
	public Long getIdLicenciaSerie() {
		return idLicenciaSerie;
	}

	public void setIdLicenciaSerie(final Long idLicenciaSerie) {
		this.idLicenciaSerie = idLicenciaSerie;
	}
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_negocio")
	public Negocio getNegocio() {
		return negocio;
	}
	
	public void setNegocio(final Negocio negocio) {
		this.negocio = negocio;
	}
	
	@Column(name = "tipo")
	public String getTipo() {
		return tipo;
	}
	
	public void setTipo(final String tipo) {
		this.tipo = tipo;
	}
	
	@Column(name = "rfc")
	public String getRfc() {
		return rfc;
	}
	
	public void setRfc(final String rfc) {
		this.rfc = rfc;
	}
	
	@Column(name = "fecha_vencimiento")
	@Temporal(TemporalType.TIMESTAMP)
	public Calendar getFechaVencimiento() {
		return fechaVencimiento;
	}
	
	public void setFechaVencimiento(final Calendar fechaVencimiento) {
		this.fechaVencimiento = fechaVencimiento;
	}
	
	@Column(name = "ultima_modificacion_por")
	public Long getUltimaModificacionPor() {
		return ultimaModificacionPor;
	}

	public void setUltimaModificacionPor(final Long ultimaModificacionPor) {
		this.ultimaModificacionPor = ultimaModificacionPor;
	}

	@Column(name = "fecha_modificacion")
	@Temporal(TemporalType.TIMESTAMP)
	@Version
	public Calendar getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(final Calendar fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}
}
